home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / share / laptop-mode-tools / modules / wireless-iwl-power < prev   
Text File  |  2009-10-06  |  2KB  |  62 lines

  1. #! /bin/sh
  2. # Laptop mode tools module, called from /usr/sbin/laptop_mode.
  3. # Configuration in /etc/laptop-mode/conf.d/wireless-ipw-power.conf.
  4. #
  5. # PURPOSE: power saving for the Intel 3945 and 4965 adapters when using the
  6. #          iwlwifi drivers.
  7. #
  8. # This script relies upon the name of the driver.
  9. #
  10.  
  11. #
  12. # Find all the wireless devices using the supplied driver names.
  13. # Place the interface names on the list WIFI_IFNAMES.
  14. #
  15. findWifiIfsByDriver () {
  16.     local DEVICE;
  17.     local LINK_TARGET;
  18.  
  19.     for DEVICE in /sys/class/net/*; do
  20.         if [ -d $DEVICE/wireless -a -h $DEVICE/device/driver ]; then
  21.             # See if the driver for $DEVICE matches the supplied one by checking the link to
  22.             # the driver.
  23.             LINK_TARGET=`readlink $DEVICE/device/driver`
  24.             LINK_TARGET=${LINK_TARGET##*/}
  25.             
  26.             if [ "$LINK_TARGET" = "$1" ] ; then
  27.                 # add the interface name to the list
  28.                 WIFI_IFNAMES="$WIFI_IFNAMES ${DEVICE##*/}"
  29.             fi
  30.         fi
  31.     done
  32. }
  33.  
  34. if [ x$CONTROL_IWL_POWER = x1 ] ; then
  35.     $LM_VERBOSE && echo "Setting power levels for iwlwifi wireless interfaces." >> $OUTPUT
  36.  
  37.     # Provide defaults for config file settings
  38.     [ "$IWL_AC_POWER" ]   || IWL_AC_POWER=6
  39.     [ "$IWL_BATT_POWER" ] || IWL_BATT_POWER=7
  40.  
  41.     WIFI_IFNAMES=""
  42.     [ -d /sys/module/iwl3945 ] && findWifiIfsByDriver iwl3945
  43.     [ -d /sys/module/iwl4965 ] && findWifiIfsByDriver iwl4965
  44.     [ -d /sys/module/iwlagn ] && findWifiIfsByDriver iwlagn
  45.     for IF in $WIFI_IFNAMES ; do
  46.         if [ $ON_AC -eq 1 ] ; then
  47.             $LM_VERBOSE && echo "On AC power: setting power level for $IF to $IWL_AC_POWER." >> $OUTPUT
  48.             if ( ! echo $IWL_AC_POWER > /sys/class/net/$IF/device/power_level ) ; then
  49.                 echo "Failed." >> $OUTPUT
  50.             fi
  51.         else
  52.             $LM_VERBOSE && echo "On battery: setting power level for $IF to $IWL_BATT_POWER." >> $OUTPUT
  53.             if ( ! echo $IWL_BATT_POWER > /sys/class/net/$IF/device/power_level ) ; then
  54.                 echo "Failed." >> $OUTPUT
  55.             fi
  56.         fi
  57.     done
  58. else
  59.     $LM_VERBOSE && echo "Intel IWL Wireless power setting is disabled." >> $OUTPUT
  60. fi
  61.